package queue;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
//入队列:remove add(一般都不会抛出异常)
//出队列:Queue中的remove 和 poll的区别:当队列为空时,remove抛出异常,poll则返回null
//取队首元素:element 和 peek的区别:当队列为空时,element抛出异常,peek则返回null
//相当于队列中针对这两种情况多给出了一种选择
public class Test1 {
    public static void main(String[] args) {
//        Queue<Integer> queue = new Queue<>();
        //Queue是一个接口,接口不能创建实例,只能创建其他类,来实现接口中的抽象方法
        Queue<Integer> queue = new LinkedList<>();
        //LinkedList实现了Queue接口,因此可以用LinkedList来创建
//        Queue<Integer> queue2 = new ArrayList<>();
        //而ArrayList没有实现,因此不能用ArrayList来创建
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);
        queue.offer(4);
        System.out.println(queue.peek());
        System.out.println(queue.poll());
        System.out.println(queue.poll());
        System.out.println(queue.poll());
        System.out.println(queue.poll());
        System.out.println(queue.poll());//会返回一个null
        //判定队列为空,下面两种写法都可以,其中isEmpty()是Collection接口的方法,Queue继承自Collection
        if(queue.peek() == null){

        }
        if(queue.isEmpty()){

        }
//        System.out.println(queue.remove());//直接抛出异常
    }
}
